Звуки по новой (та ветка безнадёжно затеряна, честно) #428
Звуки по новой (та ветка безнадёжно затеряна, честно) #428
Conversation
…t + rename; added 2d sound ; added fade to play and stop
…d zone which triggers sound TODO: Complete zone Refact log in sound component
…nger changed base sound
|
братан, тебя с такими коммитами никуда не пропустят |
There was a problem hiding this comment.
сори, я не все прям посмотрела, тк устала, но anyways тебе тут есть, что поправить.
- мне кажется почти во всех функциях можно параметры/часть параметров const сделать, чекни этот момент
- поменяй сырые ссылки на
TObjectPtr, например. сырые ссылки вообще лучше никогда не использовать в качестве параметров класса, но можно для передачи в функцию в качестве аргумента или локальном создании тоже внутри функции (https://forums.unrealengine.com/t/when-should-tobjectptr-t-be-used-outside-of-upropertys/2583905) - почисти историю коммитов. пообъединяй их, напиши нормальные названия и описания. Алина прям подробный гайд писала на один из моих пул реквестов (см. последний зарезолвенный коммент здесь #310 (review) -- там же она написала про то, что лучше иметь меньше 10 коммитов на один пр)
- ненужные изменения gitignore
- и еще парочка вопросов у меня появилась по коду
| DerivedDataCache/* | ||
|
|
||
| enc_temp_folder/* | ||
| TODO.txt |
There was a problem hiding this comment.
Я туда пишу обычно, что мне осталось делать и что я сделал, чтобы это в одном месте лежало.
Это же просто один txt в gitignore...
There was a problem hiding this comment.
Ясн, что это
Зачем это в файлах проекта, а не на компе где-то делать, неясн
Но ок, пусть будет
|
и еще -- как добавлять звуки на уровень гдшникам? это без кода можно сделать? |
Можно сделать без кода, но тогда он в манагер не попадёт :/ |
|
Так к неймингу я сейчас морально не готов, потом переименую коммиты, остальное ответил / сейчас запушу |
…ytem; moved system to new folder; constness and etc refact
|
Коммиты буду переназывать уже после того как все правки закончатся |
| @@ -0,0 +1,576 @@ | |||
| #include "Sound/G2IGameSoundManager.h" | |||
| #define STARTSOUNDSTACKSIZE 20 | |||
There was a problem hiding this comment.
Раздели define и include
И вообще, зачем константа такая? Добавь constexpr просто в класс

Close #32
И так, как пользоваться
(не гд)1) SoundManager - ядро, чтобы оно работало нужно на каждом уровне вызывать при загрузке InitGlobalAudio
С передачей туда Mix и мапы SoundClassов (1 раз делаем для каждого уровня). Уже есть готовый mix и sound classы, не знаю, нужно ли будет создавать ещё какие-то
(не гд) 2) EG2IASoundType - просто enum для более удобной работы со звуком, можно будет потом получать значения глобал звука или ставить их с помощью него (я так и не понял останутся ли настройки)
(для гд важно)3) FSoundConfig - структура с настройками звука
Sound - сам звук, можно пихать просто wav, можно sound cue (ещё почитал про meta sounds, их по идее тоже можно)
WorldLocation - ставит координату звука, если нужно
AttachToComponent - то к чему звук будет прикреплён, выбираем нужного актора (любого), можем выбрать у него компонент, если нужно, если нет, тогда он приконектится к root component
AttachmentRules - как именно прикрепляется, если здесь snap to target (приклеится к компоненту самому звук), то world location не имеет смысла настраивать
VolumeMultiplier и PitchMultiplier - отдельные от глобальных настройки для звука (чтобы можно было какой-то звук относительно другого сделать тише и т.п., и т.д.)
bIsPlayingOneTime - звук проигрывается только один раз при первом вызове play, в остальные разы игнорируется play (вынес в манагер, чтобы каждый раз не писать в коде)
bAutoDestroy - просто звук уничтожается сразу после окончания, если вдруг не захотим проигрывать вообще по новой (не связан никак с bIsPlayingOneTime)
bIs2D - переключаем звук в 2D версию (для фоновой музыки либо чего-то, что должно проиграться вообще везде)
ResolvedComponent - сама система всё решит, куда вы там хотите прикрепить, поэтому не трогайте, оно всё равно перезапишется
(не для гд)3) SoundComponent
SetupSounds - отдельная мапа, куда можно сваливать все звуки для данного актора (в моём представлении, прогер пишет код, в коде пишет нужные названия звуков, добавляет их и гд их сможет настроить, ну либо просто сделайте свои переменные, если очень хочется)
Ссылка на звук отдаётся в виде idшки, с помощью неё можно использовать звук в других функциях
Если не получится создать звук, то отдастся -1
Также все сеттеры возвращают bool, чтобы можно было понять, сработало или нет
Паттерн действия:
AddSound(soundconfig) -> сохраняем id любым удобным способом (отдельно я ничего не делал для этого) -> вызываем остальные функции с помощью id